package com.qf.mapper;

import com.qf.pojo.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author 千锋健哥
 */
public interface UserMapper {

    /**
     * 查询用户所有数据
     * @return
     */
    @Select("select * from  t_users")
    public List<User> findUserAll();

    /**
     * 根据主键查询
     * @param id
     * @return
     */
    @Select("select * from  t_users where id=#{id}")
    public User findUserById(@Param("id") Integer id);

    /**
     * 添加user
     * @param user
     */
    @Options(useGeneratedKeys = true , keyProperty = "id") // 自增key，主键为id
    @Insert("insert into t_users (name, password, sex, birthday, registTime) " +
            "        values(#{name}, #{password}, #{sex}, #{birthday}, #{registTime})")
    public void insertUser(User user);

    /**
     * 修改User
     * @param user
     */
    public void updateUser(User user);

    /**
     * 删除用户
     * @param id
     */
    public void deleteUser(Integer id);

    /**
     * 根据名字模糊查询
     * @param name
     * @return
     */
    public List<User> findUserByName(@Param("name") String name);

    /**
     * 根据名字和性别动态查询
     * @param user
     * @return
     */
    public List<User> findUserByNameAndSex(User user);

    /**
     * 根据多个id, 查询数据
     * @param ids
     * @return
     */
    public List<User> findUserByIds(@Param("ids") List<Integer> ids);

    /**
     * 查询用户和用户详情
     * @return
     */
    public List<User> findUserAndDesc();

    /**
     * 查询用户和订单
     * @return
     */
    public List<User> findUserAndOrder();

    /**
     * 查询用户, 订单, 以及商品数据
     * @return
     */
    public List<User> findUserAndOrderAndProduct();
}
